﻿Public Class Enumeraciones
    Public Enum esquemaFacturacion
        Indefinido
        CFDI_3_2
    End Enum

    Public Enum tiposIVA
        Normal
        TasaCero
        Exento
    End Enum

    Public Enum tipoBaseParaIVA
        Porcentaje
        Monto
    End Enum

    Public Enum tipoAplicacionIEPS
        NoAplica
        PorTasa
        PorCuota
    End Enum

    Public Enum operacionesCatalogos
        Registrar
        Actualizar
    End Enum

    Public Enum tipoOrdenamiento
        ASC
        DESC
    End Enum

    Public Enum campoOrdenamiento
        Id
        Status
        Descripcion
        RFC
        Nombre
        Ciudad
        Estado
        Email
        Telefono
        Direccion
        Clave
        Unidad
        Precio
        CURP
        NivelEducativo
        FamiliaProducto
    End Enum

    Public Enum catalogo
        UnidadMedida
        Clientes
        ContactosClientes
        Productos
        Alumnos
        FamiliasProductos
        TiposProductos
        Vendedores
        Proveedores
    End Enum

    Public Enum estatusParaBusquedas
        Todos
        Activos
        Inactivos
    End Enum

    Public Enum tiposCertificadosParaBusquedas
        Todos
        CSD
        Fiel
    End Enum

    Public Enum tipoImpuestosLocalesParaBusquedas
        Todos
        Traslado
        Retencion
    End Enum

    Public Enum tipoAfectaIVAParaBusquedas
        Todos
        AfectaIVA
        NoAfectaIVA
    End Enum

    Public Enum tipoPersonas
        Todos
        PersonaFisica
        PersonaMoral
    End Enum

    Public Enum tipoContribuyente
        Todos
        Nacional
        Extranjero
        PublicoEnGeneral
    End Enum

    Public Shared Function getOrderByStatement(ByVal catalogo As catalogo, ByVal campo As campoOrdenamiento, ByVal tipo As tipoOrdenamiento) As String
        Dim strOrderBy = " ORDER BY "
        Select Case catalogo
            '-------------->>>>>>>>>>>>>>>>>>>>>>>>>>>        UNIDAD DE MEDIDA
            Case Enumeraciones.catalogo.UnidadMedida
                Select Case campo
                    Case campoOrdenamiento.Id
                        strOrderBy &= "IdUdeM "
                    Case campoOrdenamiento.Status
                        strOrderBy &= "Status "
                    Case campoOrdenamiento.Descripcion
                        strOrderBy &= "DesUdeM "
                End Select

                '-------------->>>>>>>>>>>>>>>>>>>>>>>>>>>        CLIENTES
            Case Enumeraciones.catalogo.Clientes
                Select Case campo
                    Case campoOrdenamiento.Id
                        strOrderBy &= "IdCli "
                    Case campoOrdenamiento.RFC
                        strOrderBy &= "RfcCli "
                    Case campoOrdenamiento.Nombre
                        strOrderBy &= "RazonSocial "
                    Case campoOrdenamiento.Ciudad
                        strOrderBy &= "Municipio "
                    Case campoOrdenamiento.Estado
                        strOrderBy &= "Estado "
                    Case campoOrdenamiento.Email
                        strOrderBy &= "CorreoElect "
                    Case campoOrdenamiento.Telefono
                        strOrderBy &= "Telefono "
                    Case campoOrdenamiento.Status
                        strOrderBy &= "Status "
                End Select

                '-------------->>>>>>>>>>>>>>>>>>>>>>>>>>>        CLIENTES
            Case Enumeraciones.catalogo.ContactosClientes
                Select Case campo
                    Case campoOrdenamiento.Id
                        strOrderBy &= "idContactoCliente "
                    Case campoOrdenamiento.RFC
                        strOrderBy &= "Rfc "
                    Case campoOrdenamiento.Nombre
                        strOrderBy &= "Contacto "
                    Case campoOrdenamiento.Telefono
                        strOrderBy &= "Telefono "
                    Case campoOrdenamiento.Direccion
                        strOrderBy &= "Direccion "
                End Select

                '-------------->>>>>>>>>>>>>>>>>>>>>>>>>>>        PRODUCTOS
            Case Enumeraciones.catalogo.Productos
                Select Case campo
                    Case campoOrdenamiento.Id
                        strOrderBy &= "idProducto "
                    Case campoOrdenamiento.Clave
                        strOrderBy &= "Clave "
                    Case campoOrdenamiento.Nombre
                        strOrderBy &= "Nombre "
                    Case campoOrdenamiento.Unidad
                        strOrderBy &= "DesUdeM "
                    Case campoOrdenamiento.Precio
                        strOrderBy &= "PrecioUnitario "
                    Case campoOrdenamiento.Status
                        strOrderBy &= "producto.Status "
                End Select

                '-------------->>>>>>>>>>>>>>>>>>>>>>>>>>>        ALUMNOS
            Case Enumeraciones.catalogo.Alumnos
                Select Case campo
                    Case campoOrdenamiento.Id
                        strOrderBy &= "IdAlumno "
                    Case campoOrdenamiento.Nombre
                        strOrderBy &= "Nombre "
                    Case campoOrdenamiento.CURP
                        strOrderBy &= "Curp "
                    Case campoOrdenamiento.NivelEducativo
                        strOrderBy &= "Nivel "
                    Case campoOrdenamiento.Status
                        strOrderBy &= "Status "
                End Select

                '-------------->>>>>>>>>>>>>>>>>>>>>>>>>>>        FAMILIAS DE PRODUCTOS
            Case Enumeraciones.catalogo.FamiliasProductos
                Select Case campo
                    Case campoOrdenamiento.Id
                        strOrderBy &= "IdFamilia "
                    Case campoOrdenamiento.Clave
                        strOrderBy &= "ClaFamilia "
                    Case campoOrdenamiento.Descripcion
                        strOrderBy &= "DesFamilia "
                    Case campoOrdenamiento.Status
                        strOrderBy &= "Status "
                End Select

                '-------------->>>>>>>>>>>>>>>>>>>>>>>>>>>        TIPOS DE PRODUCTOS
            Case Enumeraciones.catalogo.TiposProductos
                Select Case campo
                    Case campoOrdenamiento.Id
                        strOrderBy &= "IdTipo "
                    Case campoOrdenamiento.Clave
                        strOrderBy &= "Clave "
                    Case campoOrdenamiento.Descripcion
                        strOrderBy &= "Descripcion "
                    Case campoOrdenamiento.FamiliaProducto
                        strOrderBy &= "DesFamilia "
                    Case campoOrdenamiento.Status
                        strOrderBy &= "Estatus "
                End Select

                '-------------->>>>>>>>>>>>>>>>>>>>>>>>>>>        VENDEDORES
            Case Enumeraciones.catalogo.Vendedores
                Select Case campo
                    Case campoOrdenamiento.Id
                        strOrderBy &= "IdVendedor "
                    Case campoOrdenamiento.Nombre
                        strOrderBy &= "Nombre "
                    Case campoOrdenamiento.Status
                        strOrderBy &= "Status "
                End Select

                '-------------->>>>>>>>>>>>>>>>>>>>>>>>>>>        PROVEEDORES
            Case Enumeraciones.catalogo.Proveedores
                Select Case campo
                    Case campoOrdenamiento.Id
                        strOrderBy &= "IdPro "
                    Case campoOrdenamiento.RFC
                        strOrderBy &= "RfcPro "
                    Case campoOrdenamiento.Nombre
                        strOrderBy &= "RazonSocial "
                    Case campoOrdenamiento.Ciudad
                        strOrderBy &= "Municipio "
                    Case campoOrdenamiento.Estado
                        strOrderBy &= "Estado "
                    Case campoOrdenamiento.Email
                        strOrderBy &= "CorreoElect "
                    Case campoOrdenamiento.Telefono
                        strOrderBy &= "Telefono1 "
                    Case campoOrdenamiento.Status
                        strOrderBy &= "Status "
                End Select
        End Select
        Select Case tipo
            Case tipoOrdenamiento.ASC
                strOrderBy &= "ASC "
            Case tipoOrdenamiento.DESC
                strOrderBy &= "DESC "
        End Select
        Return strOrderBy
    End Function
End Class
